/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package tests;

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 *
 * @author luis
 */
public class SnakeGUI {

    /**
     *
     */
    public static class ButtonHandler implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    }

    private static class Display extends JPanel {

        public static void draw(ArrayList<ClassCoor> posiciones, Graphics g) {
            boolean bandera = false;
            for (int i = 0; i < 10; i++) {
                for (int j = 0; j < 100; j++) {
                    for (ClassCoor item : posiciones) {
                        if (item.coor1 == i && item.coor2 == j) {
                            bandera = true;
                            break;
                        } else {
                            bandera = false;
                        }
                    }
                    if (bandera) {
                        g.drawString("*", i, j);
                    } else {
                        g.drawString(" ", i, j);
                    }
                }
                System.out.printf("\n");
            }
        }
    }

    /**
     *
     * @param posiciones
     * @param direccion
     */
    public void UpdatePos(ArrayList<ClassCoor> posiciones, int direccion) {
        ClassCoor aux = new ClassCoor(0, 0);
        ClassCoor aux2 = new ClassCoor(0, 0);
        posiciones.get(posiciones.size() - 1).Copy(aux2);
        for (int i = posiciones.size() - 1; i >= 0; i--) {
            aux2.Copy(aux);
            if (i > 0) {
                posiciones.get(i - 1).Copy(aux2);
                aux.Copy(posiciones.get(i - 1));
            }
            if (i == posiciones.size() - 1) {
                if (direccion == 1) {
                    posiciones.get(i).coor1 += -1;
                }
                if (direccion == 2) {
                    posiciones.get(i).coor1 += 1;
                }
                if (direccion == 3) {
                    posiciones.get(i).coor2 += 1;
                }
                if (direccion == 4) {
                    posiciones.get(i).coor2 += -1;
                }
            }
        }
    }

    /**
     *
     * @param args
     */
    public static void main(String[] args) {

        int posicion = 1;
        ArrayList<ClassCoor> posiciones = new ArrayList<>();
        Display display = new Display();
        JButton okButton = new JButton("OK");
        ButtonHandler listener = new ButtonHandler();
        okButton.addActionListener(listener);
        Graphics g = null;

        JPanel content = new JPanel();
        content.setLayout(new BorderLayout());
        content.add(display, BorderLayout.CENTER);
        content.add(okButton, BorderLayout.SOUTH);

        JFrame window = new JFrame("GUI Test");
        window.setContentPane(content);
        window.setSize(250, 100);
        window.setLocation(100, 100);
        window.setVisible(true);

        posiciones.add(new ClassCoor(2, 2));
        posiciones.add(new ClassCoor(2, 3));
        posiciones.add(new ClassCoor(2, 4));
        posiciones.add(new ClassCoor(2, 5));

        Snake snake = new Snake();
        snake.draw(posiciones);

        while (true) {
            System.out.println("1.Arriba, 2.Abajo, 3.Derecha, 4.Izquierda");
            posicion = Scan.Console.nextInt();
            snake.UpdatePos(posiciones, posicion);
            SnakeGUI.Display.draw(posiciones, g);
        }
    }
}
